package demo.practice.dp;

public class P523 {

    //只用前缀和  会超时，数据量在 足够大的情况下
    public boolean checkSubarraySum(int[] nums, int k) {

        if (nums == null || nums.length < 2)
            return false;


        int[] store = new int[nums.length + 1];
        for (int i = 0; i < nums.length; i++) {
            store[i + 1] = store[i] + nums[i];
        }


        for (int i = 0; i < nums.length; i++) {
            //构造一个i,一个j
            //i从0开始,则 j=j+minlen

            //因为 子数组大小 至少为 2  。 所以  最小距离为 1
            for (int j = nums.length-1; j > i; j--) {
                if ((store[j + 1] - store[i]) % k == 0)
                    return true;
            }
        }

      /*  for (int i = 0; i < nums.length; i++) {
            //构造一个i,一个j
            //i从0开始,则 j=j+minlen

            //因为 子数组大小 至少为 2  。 所以  最小距离为 1
            for (int j = i + 1; j < nums.length; j++) {
                if ((store[j + 1] - store[i]) % k == 0)
                    return true;
            }
        }
        return false;*/

        return false;
    }
}
